package com.hexacta.hrs.sandbox.meetings.web.actions;

import org.springframework.beans.factory.annotation.Autowired;

import com.hexacta.hrs.sandbox.meetings.model.Mentor;
import com.hexacta.hrs.sandbox.meetings.service.MentorsService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

/**
 * Action que controla los formuarios de las altas, bajas y modificaciones de los mentores.
 * @author ncortinez
 *
 */
public class MentorAction extends ActionSupport implements ModelDriven<Mentor> {
	
	private static final long serialVersionUID = -4158604155139405914L;
	
	@Autowired
	private MentorsService mentorsService;
	
	private Mentor mentor;
	private String name;
	private Long id;
	private Boolean loginError=Boolean.FALSE;
	
	/**
	 * Cargo el mentor con el nombre indicado de la base de datos.
	 */
	public String findMentor(){
		Mentor aMentor = null;
		
		//Buscando el mentor por id (si se indica) o por nombre.
		if(this.getId() != null){
			aMentor = getMentorsService().findById(this.getId());
		}else{
			aMentor = getMentorsService().findByName(this.getName());
		}

		//Devolviendo un error si no existe el mentor.
		if(aMentor == null){
			this.setLoginError(Boolean.TRUE);
			return NONE;
		}

		this.setMentor(aMentor);
		return SUCCESS;
	}
	
	/**
	 * Crea un nuevo mentor con el nombre indicado.
	 * @return
	 */
	public String newMentor(){
		//Verificando que el nombre del mentor no exista
		if(this.getMentorsService().mentorExists(this.getName())){
			this.setLoginError(Boolean.TRUE);
			return NONE;
		}

		//Creando un nuevo mentor con el nombre indicado.
		Mentor aMentor = getMentorsService().create(this.getName());
		getMentorsService().save(aMentor);
		this.setMentor(aMentor);
		
		return SUCCESS;
	}
		
	public Mentor getModel(){
		 return this.getMentor();
	}
	
	public Mentor getMentor() {
		return mentor;
	}

	public void setMentor(Mentor mentor) {
		this.mentor = mentor;
	}
	
	public MentorsService getMentorsService() {
		return mentorsService;
	}

	public void setMentorsService(MentorsService mentorsService) {
		this.mentorsService = mentorsService;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setLoginError(Boolean loginError) {
		this.loginError = loginError;
	}

	public Boolean getLoginError() {
		return loginError;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Long getId() {
		return id;
	}

}
